// 引入 gulp及组件
var gulp = require('gulp'),
  minifycss = require('gulp-minify-css'),		//压缩css
  uglify = require('gulp-uglify'),			//压缩JS
  imagemin = require('gulp-imagemin'),		//压缩图片
  rename = require('gulp-rename'),//可以把需要压缩的文件名字，压缩之后自己定义压缩名字（压缩后的文件名）
  notify = require('gulp-notify'), //显示信息 类似于node里面的进程输出 consolg.log(''执行到这里了)
  del = require('del'); //删除文件或者文件夹

//文件匹配符 这是常用的 可以去官网上看到更多的 
// * 匹配文件路径中的0个或多个字符，但不会匹配路径分隔符，除非路径分隔符出现在末尾
// ** 匹配路径中的0个或多个目录及其子目录,需要单独出现，即它左右不能有其他东西了。如果出现在末尾，也能匹配文件

// gulp.task 来定义任务
// pipe 连接器（一个任务执行完之后再执行下个任务）
// Styles
gulp.task('styles', function() {
        //gulp需要压缩的文件路径
        
  return gulp.src('src/styles/*.css')
        //gulp-rename 里的套路 指定压缩后的文件名
    .pipe(rename({ suffix: '.min' }))
    .pipe(minifycss())//压缩
        //压缩之后生成的文件路径（位置）
    .pipe(gulp.dest('dist/styles'))
    .pipe(notify({ message: 'Styles task complete' }));
});
// Scripts
gulp.task('scripts', function() {
  return gulp.src('src/javascripts/**/*.js')
    .pipe(rename({ suffix: '.min' }))
    .pipe(uglify())//压缩
    .pipe(gulp.dest('dist/javascripts'))
    .pipe(notify({ message: 'Scripts task complete' }));
});
// Images
gulp.task('images', function() {
  return gulp.src('src/images/**/*')
    .pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))
    .pipe(gulp.dest('dist/images'))
    .pipe(notify({ message: 'Images task complete' }));
});

// Clean（  任务执行前，先清除之前生成的文件 为了防止没有完全生成的文件遗留（执行压缩前，先删除目录里的内容）
gulp.task('clean', function(cb) {
    //删除文件或者文件夹
    del(['dist/javascripts/', 'dist/images/', 'dist/styles/'], cb)
});

// Default task  设置默认任务
gulp.task('default', function() {
    //开启任务
    gulp.start('styles', 'scripts', 'images');
});
